bitkeeper revision 1.1159.187.36 (41ab4bcbSa7RKAWie1XtrxBdva1gCA)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Mon, 29 Nov 2004 16:18:19 +0000 (16:18 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Mon, 29 Nov 2004 16:18:19 +0000 (16:18 +0000)
isa_bus_to_virt fixes

linux-2.6.9-xen-sparse/arch/xen/i386/mm/init.c
linux-2.6.9-xen-sparse/arch/xen/i386/mm/ioremap.c
linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/fixmap.h
linux-2.6.9-xen-sparse/include/asm-xen/asm-i386/io.h

index 0a403abb51d5709f2404fa3636af1fa9bdfa1122..fbf48798d34ed530b97d056bf48c7c0f8b3442bd 100644 (file)
@@ -597,7 +597,7 @@ void __init paging_init(void)
        HYPERVISOR_shared_info = (shared_info_t *)fix_to_virt(FIX_SHARED_INFO);
        memset(empty_zero_page, 0, sizeof(empty_zero_page));
 
-#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+#ifdef CONFIG_XEN_PHYSDEV_ACCESS
        /* Setup mapping of lower 1st MB */
        for (i = 0; i < NR_FIX_ISAMAPS; i++)
                if (xen_start_info.flags & SIF_PRIVILEGED)
index 7cec83afd653343a030f9f6b1270bb2050af26e8..f97d3f6b4d6515d21fa7e45c8d45a1b98719f1fe 100644 (file)
@@ -259,10 +259,12 @@ void __iomem *ioremap_nocache (unsigned long phys_addr, unsigned long size)
 void iounmap(volatile void __iomem *addr)
 {
        struct vm_struct *p;
-        if ((unsigned long)addr <= 0x100000)
-                return;
        if ((void __force *) addr <= high_memory) 
                return; 
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+       if ((unsigned long) addr >= fix_to_virt(FIX_ISAMAP_BEGIN))
+               return;
+#endif
        p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr));
        if (!p) { 
                printk("__iounmap: bad address %p\n", addr);
@@ -332,10 +334,12 @@ void __init bt_iounmap(void *addr, unsigned long size)
        enum fixed_addresses idx;
 
        virt_addr = (unsigned long)addr;
-        if (virt_addr < 0x100000)
-                return;
        if (virt_addr < fix_to_virt(FIX_BTMAP_BEGIN))
                return;
+#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+       if (virt_addr >= fix_to_virt(FIX_ISAMAP_BEGIN))
+               return;
+#endif
        offset = virt_addr & ~PAGE_MASK;
        nrpages = PAGE_ALIGN(offset + size - 1) >> PAGE_SHIFT;
 
index 794a6cd9a70542e01c753307c80c3322ac607517..cf12d309e3b57e639cd750be63a32e4b0ad9f706 100644 (file)
@@ -85,7 +85,7 @@ enum fixed_addresses {
 #endif
        FIX_SHARED_INFO,
        FIX_GNTTAB,
-#ifdef CONFIG_XEN_PRIVILEGED_GUEST
+#ifdef CONFIG_XEN_PHYSDEV_ACCESS
 #define NR_FIX_ISAMAPS 256
        FIX_ISAMAP_END,
        FIX_ISAMAP_BEGIN = FIX_ISAMAP_END + NR_FIX_ISAMAPS - 1,
index 2064f2d69ab9a92936db5175325189dce8e58c37..0837c81cfaac7ac23345d452d201823fc3212e3a 100644 (file)
@@ -134,8 +134,8 @@ extern void bt_iounmap(void *addr, unsigned long size);
  */
 #define isa_virt_to_bus(_x) isa_virt_to_bus_is_UNSUPPORTED->x
 #define isa_page_to_bus(_x) isa_page_to_bus_is_UNSUPPORTED->x
-#ifdef CONFIG_XEN_PRIVILEGED_GUEST
-#define isa_bus_to_virt(_x) (void *)__fix_to_virt(FIX_ISAMAP_BEGIN - ((_x) >> PAGE_SHIFT))
+#ifdef CONFIG_XEN_PHYSDEV_ACCESS
+#define isa_bus_to_virt(_x) (void *)(__fix_to_virt(FIX_ISAMAP_BEGIN) + (_x))
 #else
 #define isa_bus_to_virt(_x) isa_bus_to_virt_needs_PRIVILEGED_BUILD
 #endif